﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MaquinaJMG.GUI.Contrato;
using Datos.Entidades;
using Logica.Comandos.AdministracionUsuarios;
using Datos.Entidades.FabricaEntidades;
using Logica.Comandos;
using Logica.FabricaLogica;
using System.Windows.Forms;
using Logica.Comandos.ComandosAdministracionEvento;
using System.Xml;
using System.Xml.Linq;

namespace MaquinaJMG.GUI.Presentador
{
    public class PresentadorExportarPendrive
    {
        private IContratoExportarPendrive _evento;
        List<Entidad> listaUsuarios = new List<Entidad>();
        // <summary>
        /// procedimiento que genera archivo xml pendrive
        /// </summary>
        /// <parm>ruta</parm> ruta destino del archivo generado
        public void exportarPendrive(string ruta)
        {
            Comando comando = FabricaComandoXML.CrearComandoBuscarXML();

            comando.Ejecutar();
            listaUsuarios = comando.ListaEntidad;

            XmlTextWriter myXmlTextWriter = new XmlTextWriter(ruta, System.Text.Encoding.UTF8);
            myXmlTextWriter.Formatting = Formatting.Indented;
            myXmlTextWriter.WriteStartDocument(false);
            myXmlTextWriter.WriteStartElement("registroApuestas", null);


            for (int i = 0; i < listaUsuarios.Count; i++)
            {

                myXmlTextWriter.WriteStartElement("Apuesta");
                myXmlTextWriter.WriteElementString("idAcceso", null, (listaUsuarios.ElementAt(i) as Acceso).IdAcceso.ToString());
                myXmlTextWriter.WriteElementString("fecha", null, (listaUsuarios.ElementAt(i) as Acceso).Fecha.ToString());
                myXmlTextWriter.WriteElementString("hora", null, (listaUsuarios.ElementAt(i) as Acceso).Hora.ToString());
                myXmlTextWriter.WriteElementString("minuto", (listaUsuarios.ElementAt(i) as Acceso).Min.ToString());
                myXmlTextWriter.WriteElementString("montoApostado", null, (listaUsuarios.ElementAt(i) as Acceso).MontoApostado.ToString());
                myXmlTextWriter.WriteElementString("idEvento", null, (listaUsuarios.ElementAt(i) as Acceso).FkIdEvento.ToString());
                myXmlTextWriter.WriteElementString("idHistorialParticipante", null, (listaUsuarios.ElementAt(i) as Acceso).FkIdHistorialParticipante.ToString());
                myXmlTextWriter.WriteElementString("idMaquina", null, (listaUsuarios.ElementAt(i) as Acceso).FkIdHistorialParticipante.ToString());
                myXmlTextWriter.WriteEndElement();
                Comando comandoModificar = FabricaComandoXML.CrearComandoModificarAcceso((listaUsuarios.ElementAt(i) as Acceso).IdAcceso);
                comandoModificar.Ejecutar();
            }

            myXmlTextWriter.WriteEndElement();
            myXmlTextWriter.Flush();
            myXmlTextWriter.Close();
            Console.ReadLine();
        }
    }
}
